export default {
    /**
     * 身份证校验
     * @param rule
     * @param value
     * @param callback
     * @constructor
     */
    isIDCard(rule, value, callback) {
        if (!rule.required && !(value.value)) {
            callback();
        }
        const city = {
            11: "北京",
            12: "天津",
            13: "河北",
            14: "山西",
            15: "内蒙古",
            21: "辽宁",
            22: "吉林",
            23: "黑龙江 ",
            31: "上海",
            32: "江苏",
            33: "浙江",
            34: "安徽",
            35: "福建",
            36: "江西",
            37: "山东",
            41: "河南",
            42: "湖北 ",
            43: "湖南",
            44: "广东",
            45: "广西",
            46: "海南",
            50: "重庆",
            51: "四川",
            52: "贵州",
            53: "云南",
            54: "西藏 ",
            61: "陕西",
            62: "甘肃",
            63: "青海",
            64: "宁夏",
            65: "新疆",
            71: "台湾",
            81: "香港",
            82: "澳门",
            91: "国外 "
        };
        const reg = /(^\d{15}$)|(^\d{17}(\d|X)$)/;
        let province = value.value.substr(0, 2);
        //是否为空
        if (value.value === '') {
            callback(new Error('身份证号不能为空'));
        }
        //校验长度，类型
        if (!reg.test(value.value)) {
            callback(new Error('您输入的身份证号码不正确，请重新输入'));
        }
        //检查省份
        if (city[province] === undefined) {
            callback(new Error('您输入的身份证号码不正确,请重新输入'));
        }
        callback();
    },

    /**
     * 邮箱校验
     * @param rule
     * @param value
     * @param callback
     */
    isEmail(rule, value, callback) {
        if (!rule.required && !(value.value)) {
            callback();
        }
        const reg = /^([a-zA-Z0-9._-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/;
        if (!reg.test(value.value)) {
            callback(new Error('您输入的邮箱地址不正确，请重新输入'));
        }
        callback();
    },

    /**
     * 手机号码校验
     * @param rule
     * @param value
     * @param callback
     */
    mobile(rule, value, callback) {
        if (!rule.required && !(value.value)) {
            callback();
        }
        const reg = /^1[34578][0-9]\d{8}$/;
        if (!reg.test(value.value)) {
            callback(new Error('该输入项目必须是手机号码格式，例如：18866668888'));
        }
        callback();
    },

    /**
     * 数字校验
     * @param rule
     * @param value
     * @param callback
     */
    num(rule, value, callback) {
        if (!rule.required && !(value.value)) {
            callback();
        }
        if (!/^\d+$/.test(value.value)) {
            callback(new Error("该输入项只允许为0-9的数字"));
        }
        callback();
    },

    /**
     *数字校验（可小数点）
     * @param rule
     * @param value
     * @param callback
     */
    numx(rule, value, callback) {
        if (!rule.required && !(value.value)) {
            callback();
        }
        if (!/^[\d.]+$/.test(value.value)) {
            callback(new Error("该输入项只允许为0-9和."));
        }
        callback();
    },

    /**
     * 年龄
     * @param rule
     * @param value
     * @param callback
     */
    age(rule, value, callback) {
        if (!rule.required && !(value.value)) {
            callback();
        }
        if (!/^\d+$/.test(value.value)) {
            callback(new Error("年龄格式出错！！格式例如：20"));
        }
        callback();
    },

    /**
     * 邮政编码
     * @param rule
     * @param value
     * @param callback
     */
    postcode(rule, value, callback) {
        if (!rule.required && !(value.value)) {
            callback();
        }
        let reg = /^[0-9]\d{5}$/;
        if (!reg.test(value.value)) {
            callback(new Error("该输入项目必须是邮政编码格式，例如：330101"));
        }
        callback();
    },

    /**
     *  IP地址验证
     * @param rule
     * @param value
     * @param callback
     */
    ip(rule, value, callback) {
        if (!rule.required && !(value.value)) {
            callback();
        }
        let reg = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;
        if (!reg.test(value.value)) {
            callback(new Error("该输入项目必须是IP地址格式，例如：192.168.1.1"));
        }
        callback();
    },

    /**
     * 固定电话及小灵通
     * @param rule
     * @param value
     * @param callback
     */
    telephone(rule, value, callback) {
        if (!rule.required && !(value.value)) {
            callback();
        }
        let reg = /(^\d{3}\-\d{7,8}$)|(^\d{4}\-\d{7,8}$)|(^\d{3}\d{7,8}$)|(^\d{4}\d{7,8}$)|(^\d{7,8}$)|(^\d{3}\-\d{7,8}\-\d+$)|(^\d{4}\-\d{7,8}\-\d+$)|(^\d{3}\d{7,8}\-\d+$)|(^\d{4}\d{7,8}\-\d+$)|(^\d{7,8}\-\d+$)/;
        if (!reg.test(value.value)) {
            callback(new Error("该输入项目必须是电话号码格式，例如： ①0571-66668888,②057166668888,③66668888,④0571-66668888-001,⑤057166668888-100,⑥66668888-100"));
        }
        callback();
    },

    /**
     * 组织机构代码
     * @param rule
     * @param value
     * @param callback
     */
    inscode(rule, value, callback) {
        if (!rule.required && !(value.value)) {
            callback();
        }
        let reg = /^([0-9A-Z]){9}$/;
        if (!reg.test(value.value)) {
            callback(new Error("该输入项目必须是组织机构代码格式，例如：32082919X"));
        }
        callback();
    },

    /**
     * 判断输入框第一个字符不能空格
     * @param rule
     * @param value
     * @param callback
     */
    test_noBlank(rule, value, callback) {
        // console.log(value)
        
        if (!rule.required && !(value.value)) {
            callback();
        }
        if (value.value == '' || value.value == null) {
            callback(new Error("必填项，不能为空"));
        }
        callback();
    },
    /**
     * 判断输入框第一个字符不能空格
     * @param rule
     * @param value
     * @param callback
     */
    test_time(rule, value, callback){
        // console.log(value)
        let timeDot = new Date(value.value.replace(/-/g, "/")).getTime();
        let _now = Date.now();
        let oneDays = 1 * 24 * 60 * 60 * 1000;
        if (timeDot >= _now) {
            
            callback(new Error("事故时间不能晚于当日时间"));
            // console.log(1111111111)

        } 
        if (timeDot + oneDays <= _now) {
            
            callback(new Error("事故时间不能早于24小时"));

        }
        if (!rule.required && !(value.value)) {
            callback();
        }
        if (value.value == '' || value.value == null) {
            callback(new Error("必填项，不能为空"));
        }
        callback();
    }
}
